<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
 <meta>
  <!-- Stylesheets -->
  <link href="../web.css" type="text/css" rel="stylesheet"></link>
  <link href="../pygmentize.css" type="text/css" rel="stylesheet"></link>
  <title>VLFeat - Documentation - C API</title>
  <link rel="stylesheet" type="text/css" href="../doxygen.css"></style>

  <!-- Scripts-->
  
 </meta>

 <!-- Body Start -->
 <body>
  <div id="header">
   <!-- Google CSE Search Box Begins -->
   <form action="http://www.vlfeat.org/search.html" method="get" id="cse-search-box" enctype="application/x-www-form-urlencoded">
    <div>
     <input type="hidden" name="cx" value="003215582122030917471:oq23albfeam"></input>
     <input type="hidden" name="cof" value="FORID:11"></input>
     <input type="hidden" name="ie" value="UTF-8"></input>
     <input type="text" name="q" size="31"></input>
     <input type="submit" name="sa" value="Search"></input>
    </div>
   </form>
   <script src="http://www.google.com/coop/cse/brand?form=cse-search-box&amp;lang=en" xml:space="preserve" type="text/javascript"></script>
   <!-- Google CSE Search Box Ends -->
   <h1><a shape="rect" href="../index.html" class="plain"><span id="vlfeat">VLFeat</span><span id="dotorg">.org</span></a></h1>
  </div>
  <div id="headbanner">
   Documentation - C API
  </div>
  <div id="pagebody">
   <div id="sidebar"> <!-- Navigation Start -->
    <ul>
<li><a href="../index.html">Home</a>
</li>
<li><a href="../download.html">Download</a>
</li>
<li><a href="../doc.html">Documentation</a>
<ul>
<li><a href="../mdoc/mdoc.html">Matlab API</a>
</li>
<li><a href="index.html" class='active' >C API</a>
</li>
<li><a href="../man/man.html">Man pages</a>
</li>
</ul></li>
<li><a href="../overview/tut.html">Tutorials</a>
</li>
<li><a href="../applications/apps.html">Applications</a>
</li>
</ul>

   </div> <!-- sidebar -->
   <div id="content">
    
    <link rel="stylesheet" type="text/css" href="../doxygen.css"></style>
    <div class="doxygen">
<div>
<!-- Generated by Doxygen 1.7.5.1 -->
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
      <li class="current"><a href="files.html"><span>Files</span></a></li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="files.html"><span>File&#160;List</span></a></li>
      <li><a href="globals.html"><span>Globals</span></a></li>
    </ul>
  </div>
</div>
<div class="header">
  <div class="summary">
<a href="#nested-classes">Data Structures</a> &#124;
<a href="#define-members">Defines</a>  </div>
  <div class="headertitle">
<div class="title">generic.h File Reference</div>  </div>
</div>
<div class="contents">

<p>Generic (<a class="el" href="generic.html">Preprocssor, library state, etc.</a>)  
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &quot;<a class="el" href="host_8h.html">host.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="random_8h.html">random.h</a>&quot;</code><br/>
<code>#include &lt;stdlib.h&gt;</code><br/>
<code>#include &lt;stddef.h&gt;</code><br/>
<code>#include &lt;time.h&gt;</code><br/>
<code>#include &lt;assert.h&gt;</code><br/>
<code>#include &lt;Windows.h&gt;</code><br/>
</div><table class="memberdecls">
<tr><td colspan="2"><h2><a name="nested-classes"></a>
Data Structures</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structVlThreadSpecificState.html">VlThreadSpecificState</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">VLFeat thread state.  <a href="structVlThreadSpecificState.html#details">More...</a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structVlState.html">VlState</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">VLFeat global state.  <a href="structVlState.html#details">More...</a><br/></td></tr>
<tr><td colspan="2"><h2><a name="define-members"></a>
Defines</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa53b45e68c7ce79c6fc539e64ba027a6"></a><!-- doxytag: member="generic.h::VL_VERSION_STRING" ref="aa53b45e68c7ce79c6fc539e64ba027a6" args="" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="generic_8h.html#aa53b45e68c7ce79c6fc539e64ba027a6">VL_VERSION_STRING</a>&#160;&#160;&#160;&quot;0.9.14&quot;</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Library version string. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af35e10968d642caab4fbffe6f4b0789c"></a><!-- doxytag: member="generic.h::VL_ERR_MSG_LEN" ref="af35e10968d642caab4fbffe6f4b0789c" args="" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="generic_8h.html#af35e10968d642caab4fbffe6f4b0789c">VL_ERR_MSG_LEN</a>&#160;&#160;&#160;1024</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Maximum length (in characters) of an error message. <br/></td></tr>
<tr><td colspan="2"><div class="groupHeader">Common operations</div></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="generic_8h.html#a36f2f85796040ca2f71bb34a9f55969f">VL_MIN</a>(x, y)&#160;&#160;&#160;(((x)&lt;(y))?(x):(y))</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Min operation.  <a href="#a36f2f85796040ca2f71bb34a9f55969f"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="generic_8h.html#ac8a3f4020a3e381daadd4214668dc63c">VL_MAX</a>(x, y)&#160;&#160;&#160;(((x)&gt;(y))?(x):(y))</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Max operation.  <a href="#ac8a3f4020a3e381daadd4214668dc63c"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="generic_8h.html#aee17b425e4672e582e26cf9e103fc0fb">VL_SHIFT_LEFT</a>(x, n)&#160;&#160;&#160;(((n)&gt;=0)?((x)&lt;&lt;(n)):((x)&gt;&gt;-(n)))</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Signed left shift operation.  <a href="#aee17b425e4672e582e26cf9e103fc0fb"></a><br/></td></tr>
<tr><td colspan="2"><h2><a name="func-members"></a>
Functions</h2></td></tr>
<tr><td colspan="2"><div class="groupHeader">Memory allocation</div></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="generic_8h.html#ac04fe278ac908fa6ed02bda099588cf0">vl_set_alloc_func</a> (void *(*malloc_func)(size_t), void *(*realloc_func)(void *, size_t), void *(*calloc_func)(size_t, size_t), void(*free_func)(void *))</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Set memory allocation functions.  <a href="#ac04fe278ac908fa6ed02bda099588cf0"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="generic_8h.html#a136474bd173eb04e98989c7a521d4ada">vl_malloc</a> (size_t n)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Call customizable <code>malloc</code> function.  <a href="#a136474bd173eb04e98989c7a521d4ada"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="generic_8h.html#a6213d08692fb90f0a0eaa423644f25c2">vl_realloc</a> (void *ptr, size_t n)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Call customizable <code>resize</code> function.  <a href="#a6213d08692fb90f0a0eaa423644f25c2"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="generic_8h.html#a175a5268fe40a4e3c68e6fab63ed064b">vl_calloc</a> (size_t n, size_t size)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Call customizable <code>calloc</code> function.  <a href="#a175a5268fe40a4e3c68e6fab63ed064b"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="generic_8h.html#ae070a0a4d3d367a1ba8308644c88ada3">vl_free</a> (void *ptr)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Call customizable <code>free</code> function.  <a href="#ae070a0a4d3d367a1ba8308644c88ada3"></a><br/></td></tr>
<tr><td colspan="2"><div class="groupHeader">Measuring time</div></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="generic_8h.html#a0eb9d2de6dc4cb6570db6bb3e8c39244">vl_tic</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Reset processor time reference The function resets VLFeat TIC/TOC time reference.  <a href="#a0eb9d2de6dc4cb6570db6bb3e8c39244"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="generic_8h.html#a6570090509ab5a156a24e2bbd082590d">vl_toc</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Get elapsed time since tic.  <a href="#a6570090509ab5a156a24e2bbd082590d"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="generic_8h.html#a4a2af50f50dfc91505947ced9656f5e7">vl_get_cpu_time</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Get processor time.  <a href="#a4a2af50f50dfc91505947ced9656f5e7"></a><br/></td></tr>
<tr><td colspan="2"><h2><a name="member-group"></a>
Type identidifers for atomic data types</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="generic_8h.html#aa034d0b942f9800b2a02aeb30ff10fa2">VL_TYPE_FLOAT</a>&#160;&#160;&#160;1</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="generic_8h.html#a41d6691dac0cc3648ca9701d27e5d2b0">VL_TYPE_DOUBLE</a>&#160;&#160;&#160;2</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="generic_8h.html#a90ea396337523c32c3022f358196ccc9">VL_TYPE_INT8</a>&#160;&#160;&#160;3</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="generic_8h.html#a4db234bb60c94d6f562f8e9ce3b1795e">VL_TYPE_UINT8</a>&#160;&#160;&#160;4</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="generic_8h.html#a4eb25b91045f880c1d10e609174d3f5c">VL_TYPE_INT16</a>&#160;&#160;&#160;5</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="generic_8h.html#a2e47aef4fdd2aa9f388fd2adfc36f4b1">VL_TYPE_UINT16</a>&#160;&#160;&#160;6</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="generic_8h.html#a4ca0c2adc987dcb7f57a7de7893f5b7c">VL_TYPE_INT32</a>&#160;&#160;&#160;7</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="generic_8h.html#ac1ca77a71afce483185fbd23f4df9ec7">VL_TYPE_UINT32</a>&#160;&#160;&#160;8</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="generic_8h.html#a873cea95408414b33bc0d0af250caf5e">VL_TYPE_INT64</a>&#160;&#160;&#160;9</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="generic_8h.html#ace055d33cb1d7f213bfc0b3a55b86fa2">VL_TYPE_UINT64</a>&#160;&#160;&#160;10</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac7e54723741819a9f91160cce44f0bbc"></a><!-- doxytag: member="generic.h::vl_type" ref="ac7e54723741819a9f91160cce44f0bbc" args="" -->
typedef <a class="el" href="host_8h.html#aeb7c862765448a70017105efa4d25e7a">vl_uint32</a>&#160;</td><td class="memItemRight" valign="bottom"><b>vl_type</b></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">char const *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="generic_8h.html#a2e4f4c7b7a1d74606a62ca4077fddba8">vl_get_type_name</a> (vl_type type)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the name of a data type.  <a href="#a2e4f4c7b7a1d74606a62ca4077fddba8"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="host_8h.html#a0ee26101458c663510d620e3ee7e2555">vl_size</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="generic_8h.html#a477016b861e56130cfb95fe7085138d9">vl_get_type_size</a> (vl_type type)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Get data type size.  <a href="#a477016b861e56130cfb95fe7085138d9"></a><br/></td></tr>
<tr><td colspan="2"><h2><a name="member-group"></a>
Library state and configuration</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="structVlState.html">VlState</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="generic_8h.html#a4103c75c5cf944bff8dce736cbb70070">_vl_state</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">VLFeat global state.  <a href="#a4103c75c5cf944bff8dce736cbb70070"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="structVlState.html">VlState</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="generic_8h.html#ac0c7b314fd6520af23d0599b4ff045cf">vl_get_state</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Return VLFeat global state.  <a href="#ac0c7b314fd6520af23d0599b4ff045cf"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="structVlThreadSpecificState.html">VlThreadSpecificState</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="generic_8h.html#a6b45f06fe888a9750154692de6d048da">vl_get_thread_specific_state</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Get VLFeat thread state.  <a href="#a6b45f06fe888a9750154692de6d048da"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="generic_8h.html#ab305fa7aba6c2a4d543162fd3e146960">vl_lock_state</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Lock VLFeat state.  <a href="#ab305fa7aba6c2a4d543162fd3e146960"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="generic_8h.html#a8931cffd4ffeeaa43c217bf8005da38f">vl_unlock_state</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Unlock VLFeat state.  <a href="#a8931cffd4ffeeaa43c217bf8005da38f"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acfaa7971cf71216e7cfd7e2fbc6e1862"></a><!-- doxytag: member="generic.h::vl_thread_specific_state_new" ref="acfaa7971cf71216e7cfd7e2fbc6e1862" args="()" -->
<a class="el" href="structVlThreadSpecificState.html">VlThreadSpecificState</a> *&#160;</td><td class="memItemRight" valign="bottom"><b>vl_thread_specific_state_new</b> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5a5b9433a469b6adb8cbebc0606cfdaa"></a><!-- doxytag: member="generic.h::vl_thread_specific_state_delete" ref="a5a5b9433a469b6adb8cbebc0606cfdaa" args="(VlThreadSpecificState *self)" -->
void&#160;</td><td class="memItemRight" valign="bottom"><b>vl_thread_specific_state_delete</b> (<a class="el" href="structVlThreadSpecificState.html">VlThreadSpecificState</a> *self)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">char const *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="generic_8h.html#ae7c089c95c8bff8fb32284fdeb4818a8">vl_get_version_string</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Get version string.  <a href="#ae7c089c95c8bff8fb32284fdeb4818a8"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="generic_8h.html#af5d5bc78259d28d72a02d730e5f14b04">vl_configuration_to_string_copy</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Human readable library configuration.  <a href="#af5d5bc78259d28d72a02d730e5f14b04"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="generic_8h.html#a3fb6cee731450d886e49da54e29788e8">vl_set_simd_enabled</a> (<a class="el" href="host_8h.html#ad32e7f8ec7333ff33998cf671a3b1412">vl_bool</a> x)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Toggle usage of SIMD instructions.  <a href="#a3fb6cee731450d886e49da54e29788e8"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="host_8h.html#ad32e7f8ec7333ff33998cf671a3b1412">vl_bool</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="generic_8h.html#a8fd5c5f53a678b8e24505f1fc98490a2">vl_get_simd_enabled</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Are SIMD instructons enabled?  <a href="#a8fd5c5f53a678b8e24505f1fc98490a2"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="host_8h.html#ad32e7f8ec7333ff33998cf671a3b1412">vl_bool</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="generic_8h.html#ad176e5e370a9fbe9cb1995f53d228c0f">vl_cpu_has_sse3</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Check for SSE3 instruction set.  <a href="#ad176e5e370a9fbe9cb1995f53d228c0f"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="host_8h.html#ad32e7f8ec7333ff33998cf671a3b1412">vl_bool</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="generic_8h.html#a8b42bd1be913fee5ae234899bbd5990d">vl_cpu_has_sse2</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Check for SSE2 instruction set.  <a href="#a8b42bd1be913fee5ae234899bbd5990d"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abf626614c0fc2b3f1d44cd06b19339a0"></a><!-- doxytag: member="generic.h::vl_get_num_cpus" ref="abf626614c0fc2b3f1d44cd06b19339a0" args="()" -->
int&#160;</td><td class="memItemRight" valign="bottom"><b>vl_get_num_cpus</b> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="structVlRand.html">VlRand</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="generic_8h.html#ac0ce7fb575acd4f01cbb4a275ba84700">vl_get_rand</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the random number generator for this thread.  <a href="#ac0ce7fb575acd4f01cbb4a275ba84700"></a><br/></td></tr>
<tr><td colspan="2"><h2><a name="member-group"></a>
Error handling</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="generic_8h.html#a26519a3dd2966d2d46538eb46921abba">VL_ERR_OK</a>&#160;&#160;&#160;0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="generic_8h.html#aad375cc4dcec5d098a94d072b6c5b3d4">VL_ERR_OVERFLOW</a>&#160;&#160;&#160;1</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="generic_8h.html#a0a05979eb0e5e1bb8edd1d6992d73f5f">VL_ERR_ALLOC</a>&#160;&#160;&#160;2</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="generic_8h.html#aa4c6982fd95a25fca8ec202632581345">VL_ERR_BAD_ARG</a>&#160;&#160;&#160;3</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="generic_8h.html#aba78f9bc7029f3e8f69e502ef10a1ea2">VL_ERR_IO</a>&#160;&#160;&#160;4</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="generic_8h.html#a67cc69e40d7af2aec137b36e53422982">VL_ERR_EOF</a>&#160;&#160;&#160;5</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="generic_8h.html#a28c5e84bca772be393e834dfff61b22d">VL_ERR_NO_MORE</a>&#160;&#160;&#160;5</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="generic_8h.html#ac1a9bdc5e32a00ca28599b8daf5e0d50">vl_get_last_error</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Get VLFeat last error code.  <a href="#ac1a9bdc5e32a00ca28599b8daf5e0d50"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">char const *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="generic_8h.html#adf40d994cf9e6bbbc6c7dc92b3865882">vl_get_last_error_message</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Get VLFeat last error message.  <a href="#adf40d994cf9e6bbbc6c7dc92b3865882"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="generic_8h.html#a7a3ebca801573280aafbea04578ef124">vl_set_last_error</a> (int error, char const *errorMessage,...)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Set last VLFeat error.  <a href="#a7a3ebca801573280aafbea04578ef124"></a><br/></td></tr>
<tr><td colspan="2"><h2><a name="member-group"></a>
Logging</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="generic_8h.html#af68d1c6327bf2226b15c84007eab3d94">VL_PRINTF</a>&#160;&#160;&#160;(*vl_get_state()-&gt;printf_func)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Call user-customizable <code>printf</code> function.  <a href="#af68d1c6327bf2226b15c84007eab3d94"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1d4b7e68329e078b0d9064b7f408c96b"></a><!-- doxytag: member="generic.h::VL_PRINT" ref="a1d4b7e68329e078b0d9064b7f408c96b" args="" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="generic_8h.html#a1d4b7e68329e078b0d9064b7f408c96b">VL_PRINT</a>&#160;&#160;&#160;(*vl_get_state()-&gt;printf_func)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Same as <a class="el" href="generic_8h.html#af68d1c6327bf2226b15c84007eab3d94" title="Call user-customizable printf function.">VL_PRINTF</a> (legacy code) <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abed0f89efbee38c21c99d2967bab01c1"></a><!-- doxytag: member="generic.h::printf_func_t" ref="abed0f89efbee38c21c99d2967bab01c1" args=")(char const *format,...)" -->
typedef int(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="generic_8h.html#abed0f89efbee38c21c99d2967bab01c1">printf_func_t</a> )(char const *format,...)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Customizable printf function pointer type. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="generic_8h.html#a17ef7f5dfc74e0ff032f46617a5bc1c5">vl_set_printf_func</a> (<a class="el" href="generic_8h.html#abed0f89efbee38c21c99d2967bab01c1">printf_func_t</a> printf_func)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Set printf function.  <a href="#a17ef7f5dfc74e0ff032f46617a5bc1c5"></a><br/></td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><dl class="author"><dt><b>Author:</b></dt><dd>Andrea Vedaldi </dd></dl>
</div><hr/><h2>Define Documentation</h2>
<a class="anchor" id="a0a05979eb0e5e1bb8edd1d6992d73f5f"></a><!-- doxytag: member="generic.h::VL_ERR_ALLOC" ref="a0a05979eb0e5e1bb8edd1d6992d73f5f" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define VL_ERR_ALLOC&#160;&#160;&#160;2</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Resource allocation error </p>

</div>
</div>
<a class="anchor" id="aa4c6982fd95a25fca8ec202632581345"></a><!-- doxytag: member="generic.h::VL_ERR_BAD_ARG" ref="aa4c6982fd95a25fca8ec202632581345" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define VL_ERR_BAD_ARG&#160;&#160;&#160;3</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Bad argument or illegal data error </p>

</div>
</div>
<a class="anchor" id="a67cc69e40d7af2aec137b36e53422982"></a><!-- doxytag: member="generic.h::VL_ERR_EOF" ref="a67cc69e40d7af2aec137b36e53422982" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define VL_ERR_EOF&#160;&#160;&#160;5</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>End-of-file or end-of-sequence error </p>

</div>
</div>
<a class="anchor" id="aba78f9bc7029f3e8f69e502ef10a1ea2"></a><!-- doxytag: member="generic.h::VL_ERR_IO" ref="aba78f9bc7029f3e8f69e502ef10a1ea2" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define VL_ERR_IO&#160;&#160;&#160;4</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Input/output error </p>

</div>
</div>
<a class="anchor" id="a28c5e84bca772be393e834dfff61b22d"></a><!-- doxytag: member="generic.h::VL_ERR_NO_MORE" ref="a28c5e84bca772be393e834dfff61b22d" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define VL_ERR_NO_MORE&#160;&#160;&#160;5</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>End-of-sequence</p>
<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000001">Deprecated:</a></b></dt><dd></dd></dl>

</div>
</div>
<a class="anchor" id="a26519a3dd2966d2d46538eb46921abba"></a><!-- doxytag: member="generic.h::VL_ERR_OK" ref="a26519a3dd2966d2d46538eb46921abba" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define VL_ERR_OK&#160;&#160;&#160;0</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>No error </p>

</div>
</div>
<a class="anchor" id="aad375cc4dcec5d098a94d072b6c5b3d4"></a><!-- doxytag: member="generic.h::VL_ERR_OVERFLOW" ref="aad375cc4dcec5d098a94d072b6c5b3d4" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define VL_ERR_OVERFLOW&#160;&#160;&#160;1</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Buffer overflow error </p>

</div>
</div>
<a class="anchor" id="ac8a3f4020a3e381daadd4214668dc63c"></a><!-- doxytag: member="generic.h::VL_MAX" ref="ac8a3f4020a3e381daadd4214668dc63c" args="(x, y)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define VL_MAX</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">x, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">y&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;(((x)&gt;(y))?(x):(y))</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">x</td><td>value. </td></tr>
    <tr><td class="paramname">y</td><td>value. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the maximum of <em>x</em> and <em>y</em>. </dd></dl>

</div>
</div>
<a class="anchor" id="a36f2f85796040ca2f71bb34a9f55969f"></a><!-- doxytag: member="generic.h::VL_MIN" ref="a36f2f85796040ca2f71bb34a9f55969f" args="(x, y)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define VL_MIN</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">x, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">y&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;(((x)&lt;(y))?(x):(y))</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">x</td><td>value </td></tr>
    <tr><td class="paramname">y</td><td>value </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the minimum of <em>x</em> and <em>y</em>. </dd></dl>

</div>
</div>
<a class="anchor" id="af68d1c6327bf2226b15c84007eab3d94"></a><!-- doxytag: member="generic.h::VL_PRINTF" ref="af68d1c6327bf2226b15c84007eab3d94" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define VL_PRINTF&#160;&#160;&#160;(*vl_get_state()-&gt;printf_func)</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>The function calls the user customizable <code>printf</code>. </p>

</div>
</div>
<a class="anchor" id="aee17b425e4672e582e26cf9e103fc0fb"></a><!-- doxytag: member="generic.h::VL_SHIFT_LEFT" ref="aee17b425e4672e582e26cf9e103fc0fb" args="(x, n)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define VL_SHIFT_LEFT</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">x, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">n&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;(((n)&gt;=0)?((x)&lt;&lt;(n)):((x)&gt;&gt;-(n)))</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>The macro is equivalent to the builtin <code>&lt;&lt;</code> operator, but it supports negative shifts too.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">x</td><td>value. </td></tr>
    <tr><td class="paramname">n</td><td>number of shift positions. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd><code>x</code> &lt;&lt; n . </dd></dl>

</div>
</div>
<a class="anchor" id="a41d6691dac0cc3648ca9701d27e5d2b0"></a><!-- doxytag: member="generic.h::VL_TYPE_DOUBLE" ref="a41d6691dac0cc3648ca9701d27e5d2b0" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define VL_TYPE_DOUBLE&#160;&#160;&#160;2</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p><code>double</code> type </p>

</div>
</div>
<a class="anchor" id="aa034d0b942f9800b2a02aeb30ff10fa2"></a><!-- doxytag: member="generic.h::VL_TYPE_FLOAT" ref="aa034d0b942f9800b2a02aeb30ff10fa2" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define VL_TYPE_FLOAT&#160;&#160;&#160;1</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p><code>float</code> type </p>

</div>
</div>
<a class="anchor" id="a4eb25b91045f880c1d10e609174d3f5c"></a><!-- doxytag: member="generic.h::VL_TYPE_INT16" ref="a4eb25b91045f880c1d10e609174d3f5c" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define VL_TYPE_INT16&#160;&#160;&#160;5</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p><code><a class="el" href="host_8h.html#a47e046602e64d54280961328bf950ca1" title="Signed 16-bit integer.">vl_int16</a></code> type </p>

</div>
</div>
<a class="anchor" id="a4ca0c2adc987dcb7f57a7de7893f5b7c"></a><!-- doxytag: member="generic.h::VL_TYPE_INT32" ref="a4ca0c2adc987dcb7f57a7de7893f5b7c" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define VL_TYPE_INT32&#160;&#160;&#160;7</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p><code><a class="el" href="host_8h.html#a03fa435c713d3141c4a700f79f5b2600" title="Signed 32-bit integer.">vl_int32</a></code> type </p>

</div>
</div>
<a class="anchor" id="a873cea95408414b33bc0d0af250caf5e"></a><!-- doxytag: member="generic.h::VL_TYPE_INT64" ref="a873cea95408414b33bc0d0af250caf5e" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define VL_TYPE_INT64&#160;&#160;&#160;9</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p><code><a class="el" href="host_8h.html#ab9925d4a6df873da6df7a59d2a97d81c" title="Signed 64-bit integer.">vl_int64</a></code> type </p>

</div>
</div>
<a class="anchor" id="a90ea396337523c32c3022f358196ccc9"></a><!-- doxytag: member="generic.h::VL_TYPE_INT8" ref="a90ea396337523c32c3022f358196ccc9" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define VL_TYPE_INT8&#160;&#160;&#160;3</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p><code><a class="el" href="host_8h.html#aee4cc9690b799a33dfc9614636ac34a1" title="Signed 8-bit integer.">vl_int8</a></code> type </p>

</div>
</div>
<a class="anchor" id="a2e47aef4fdd2aa9f388fd2adfc36f4b1"></a><!-- doxytag: member="generic.h::VL_TYPE_UINT16" ref="a2e47aef4fdd2aa9f388fd2adfc36f4b1" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define VL_TYPE_UINT16&#160;&#160;&#160;6</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p><code><a class="el" href="host_8h.html#ab2275d6c7bf6fc027151d11072b45f03" title="Unsigned 16-bit integer.">vl_uint16</a></code> type </p>

</div>
</div>
<a class="anchor" id="ac1ca77a71afce483185fbd23f4df9ec7"></a><!-- doxytag: member="generic.h::VL_TYPE_UINT32" ref="ac1ca77a71afce483185fbd23f4df9ec7" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define VL_TYPE_UINT32&#160;&#160;&#160;8</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p><code><a class="el" href="host_8h.html#aeb7c862765448a70017105efa4d25e7a" title="Unsigned 32-bit integer.">vl_uint32</a></code> type </p>

</div>
</div>
<a class="anchor" id="ace055d33cb1d7f213bfc0b3a55b86fa2"></a><!-- doxytag: member="generic.h::VL_TYPE_UINT64" ref="ace055d33cb1d7f213bfc0b3a55b86fa2" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define VL_TYPE_UINT64&#160;&#160;&#160;10</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p><code><a class="el" href="host_8h.html#af37832522d1f5c028ac15d0ccda7ff48" title="Unsigned 64-bit integer.">vl_uint64</a></code> type </p>

</div>
</div>
<a class="anchor" id="a4db234bb60c94d6f562f8e9ce3b1795e"></a><!-- doxytag: member="generic.h::VL_TYPE_UINT8" ref="a4db234bb60c94d6f562f8e9ce3b1795e" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define VL_TYPE_UINT8&#160;&#160;&#160;4</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p><code><a class="el" href="host_8h.html#a38fbd9a3cf53dfc9a5650c38497b7d35" title="Unsigned 8-bit integer.">vl_uint8</a></code> type </p>

</div>
</div>
<hr/><h2>Function Documentation</h2>
<a class="anchor" id="a175a5268fe40a4e3c68e6fab63ed064b"></a><!-- doxytag: member="generic.h::vl_calloc" ref="a175a5268fe40a4e3c68e6fab63ed064b" args="(size_t n, size_t size)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void * vl_calloc </td>
          <td>(</td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>n</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>size</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">n</td><td>size of each element in byte. </td></tr>
    <tr><td class="paramname">size</td><td>size of the array to allocate (number of elements).</td></tr>
  </table>
  </dd>
</dl>
<p>The function calls the user-customizable <code>calloc</code>.</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>result of the user-customizable <code>calloc</code>. </dd></dl>

</div>
</div>
<a class="anchor" id="af5d5bc78259d28d72a02d730e5f14b04"></a><!-- doxytag: member="generic.h::vl_configuration_to_string_copy" ref="af5d5bc78259d28d72a02d730e5f14b04" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">char* vl_configuration_to_string_copy </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd>a new string with the library configuration.</dd></dl>
<p>The function returns a new string with a human readable rendition of the library configuration. </p>

</div>
</div>
<a class="anchor" id="a8b42bd1be913fee5ae234899bbd5990d"></a><!-- doxytag: member="generic.h::vl_cpu_has_sse2" ref="a8b42bd1be913fee5ae234899bbd5990d" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="host_8h.html#ad32e7f8ec7333ff33998cf671a3b1412">vl_bool</a> vl_cpu_has_sse2 </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd><code>true</code> if SSE2 is present. </dd></dl>

</div>
</div>
<a class="anchor" id="ad176e5e370a9fbe9cb1995f53d228c0f"></a><!-- doxytag: member="generic.h::vl_cpu_has_sse3" ref="ad176e5e370a9fbe9cb1995f53d228c0f" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="host_8h.html#ad32e7f8ec7333ff33998cf671a3b1412">vl_bool</a> vl_cpu_has_sse3 </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd><code>true</code> if SSE3 is present. </dd></dl>

</div>
</div>
<a class="anchor" id="ae070a0a4d3d367a1ba8308644c88ada3"></a><!-- doxytag: member="generic.h::vl_free" ref="ae070a0a4d3d367a1ba8308644c88ada3" args="(void *ptr)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void vl_free </td>
          <td>(</td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>ptr</em></td><td>)</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">ptr</td><td>buffer to free.</td></tr>
  </table>
  </dd>
</dl>
<p>The function calls the user customizable <code>free</code>. </p>

</div>
</div>
<a class="anchor" id="a4a2af50f50dfc91505947ced9656f5e7"></a><!-- doxytag: member="generic.h::vl_get_cpu_time" ref="a4a2af50f50dfc91505947ced9656f5e7" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">double vl_get_cpu_time </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd>processor time. </dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="generic_8h.html#a0eb9d2de6dc4cb6570db6bb3e8c39244" title="Reset processor time reference The function resets VLFeat TIC/TOC time reference.">vl_tic</a>, <a class="el" href="generic_8h.html#a6570090509ab5a156a24e2bbd082590d" title="Get elapsed time since tic.">vl_toc</a> </dd></dl>

</div>
</div>
<a class="anchor" id="ac1a9bdc5e32a00ca28599b8daf5e0d50"></a><!-- doxytag: member="generic.h::vl_get_last_error" ref="ac1a9bdc5e32a00ca28599b8daf5e0d50" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int vl_get_last_error </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>The function returns the code of the last error generated by VLFeat.</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>laste error code. </dd></dl>

</div>
</div>
<a class="anchor" id="adf40d994cf9e6bbbc6c7dc92b3865882"></a><!-- doxytag: member="generic.h::vl_get_last_error_message" ref="adf40d994cf9e6bbbc6c7dc92b3865882" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">char const * vl_get_last_error_message </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>The function returns the message of the last error generated by VLFeat.</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>last error message. </dd></dl>

</div>
</div>
<a class="anchor" id="ac0ce7fb575acd4f01cbb4a275ba84700"></a><!-- doxytag: member="generic.h::vl_get_rand" ref="ac0ce7fb575acd4f01cbb4a275ba84700" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structVlRand.html">VlRand</a>* vl_get_rand </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd>random number generator.</dd></dl>
<p>The function returns a pointer to the random number genrator for this thread. </p>

</div>
</div>
<a class="anchor" id="a8fd5c5f53a678b8e24505f1fc98490a2"></a><!-- doxytag: member="generic.h::vl_get_simd_enabled" ref="a8fd5c5f53a678b8e24505f1fc98490a2" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="host_8h.html#ad32e7f8ec7333ff33998cf671a3b1412">vl_bool</a> vl_get_simd_enabled </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd><code>true</code> is SIMD instructions are enabled. </dd></dl>

</div>
</div>
<a class="anchor" id="ac0c7b314fd6520af23d0599b4ff045cf"></a><!-- doxytag: member="generic.h::vl_get_state" ref="ac0c7b314fd6520af23d0599b4ff045cf" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structVlState.html">VlState</a> * vl_get_state </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>The function returns a pointer to VLFeat global state.</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>pointer to the global state structure. </dd></dl>

</div>
</div>
<a class="anchor" id="a6b45f06fe888a9750154692de6d048da"></a><!-- doxytag: member="generic.h::vl_get_thread_specific_state" ref="a6b45f06fe888a9750154692de6d048da" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structVlThreadSpecificState.html">VlThreadSpecificState</a> * vl_get_thread_specific_state </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>The function returns a pointer to VLFeat thread state.</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>pointer to the thread state structure. </dd></dl>

</div>
</div>
<a class="anchor" id="a2e4f4c7b7a1d74606a62ca4077fddba8"></a><!-- doxytag: member="generic.h::vl_get_type_name" ref="a2e4f4c7b7a1d74606a62ca4077fddba8" args="(vl_type type)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">char const* vl_get_type_name </td>
          <td>(</td>
          <td class="paramtype">vl_type&#160;</td>
          <td class="paramname"><em>type</em></td><td>)</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">type</td><td>data type. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>data name of the data type.</dd></dl>
<p><code>type</code> is one of <a class="el" href="generic_8h.html#aa034d0b942f9800b2a02aeb30ff10fa2">VL_TYPE_FLOAT</a>, <a class="el" href="generic_8h.html#a41d6691dac0cc3648ca9701d27e5d2b0">VL_TYPE_DOUBLE</a>, <a class="el" href="generic_8h.html#a90ea396337523c32c3022f358196ccc9">VL_TYPE_INT8</a>, <a class="el" href="generic_8h.html#a4eb25b91045f880c1d10e609174d3f5c">VL_TYPE_INT16</a>, <a class="el" href="generic_8h.html#a4ca0c2adc987dcb7f57a7de7893f5b7c">VL_TYPE_INT32</a>, <a class="el" href="generic_8h.html#a873cea95408414b33bc0d0af250caf5e">VL_TYPE_INT64</a>, <a class="el" href="generic_8h.html#a4db234bb60c94d6f562f8e9ce3b1795e">VL_TYPE_UINT8</a>, <a class="el" href="generic_8h.html#a2e47aef4fdd2aa9f388fd2adfc36f4b1">VL_TYPE_UINT16</a>, <a class="el" href="generic_8h.html#ac1ca77a71afce483185fbd23f4df9ec7">VL_TYPE_UINT32</a>, <a class="el" href="generic_8h.html#ace055d33cb1d7f213bfc0b3a55b86fa2">VL_TYPE_UINT64</a>. </p>

</div>
</div>
<a class="anchor" id="a477016b861e56130cfb95fe7085138d9"></a><!-- doxytag: member="generic.h::vl_get_type_size" ref="a477016b861e56130cfb95fe7085138d9" args="(vl_type type)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="host_8h.html#a0ee26101458c663510d620e3ee7e2555">vl_size</a> vl_get_type_size </td>
          <td>(</td>
          <td class="paramtype">vl_type&#160;</td>
          <td class="paramname"><em>type</em></td><td>)</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">type</td><td>data type. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>size (in byte)</dd></dl>
<p><code>type</code> is one of <a class="el" href="generic_8h.html#aa034d0b942f9800b2a02aeb30ff10fa2">VL_TYPE_FLOAT</a>, <a class="el" href="generic_8h.html#a41d6691dac0cc3648ca9701d27e5d2b0">VL_TYPE_DOUBLE</a>, <a class="el" href="generic_8h.html#a90ea396337523c32c3022f358196ccc9">VL_TYPE_INT8</a>, <a class="el" href="generic_8h.html#a4eb25b91045f880c1d10e609174d3f5c">VL_TYPE_INT16</a>, <a class="el" href="generic_8h.html#a4ca0c2adc987dcb7f57a7de7893f5b7c">VL_TYPE_INT32</a>, <a class="el" href="generic_8h.html#a873cea95408414b33bc0d0af250caf5e">VL_TYPE_INT64</a>, <a class="el" href="generic_8h.html#a4db234bb60c94d6f562f8e9ce3b1795e">VL_TYPE_UINT8</a>, <a class="el" href="generic_8h.html#a2e47aef4fdd2aa9f388fd2adfc36f4b1">VL_TYPE_UINT16</a>, <a class="el" href="generic_8h.html#ac1ca77a71afce483185fbd23f4df9ec7">VL_TYPE_UINT32</a>, <a class="el" href="generic_8h.html#ace055d33cb1d7f213bfc0b3a55b86fa2">VL_TYPE_UINT64</a>. </p>

</div>
</div>
<a class="anchor" id="ae7c089c95c8bff8fb32284fdeb4818a8"></a><!-- doxytag: member="generic.h::vl_get_version_string" ref="ae7c089c95c8bff8fb32284fdeb4818a8" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">char const* vl_get_version_string </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd>library version string </dd></dl>

</div>
</div>
<a class="anchor" id="ab305fa7aba6c2a4d543162fd3e146960"></a><!-- doxytag: member="generic.h::vl_lock_state" ref="ab305fa7aba6c2a4d543162fd3e146960" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void vl_lock_state </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>The function locks VLFeat global state mutex.</p>
<p>The mutex is recursive: locking multiple times from the same thread is a valid operations, but requires an equivalent number of calls to <a class="el" href="generic_8h.html#a8931cffd4ffeeaa43c217bf8005da38f" title="Unlock VLFeat state.">vl_unlock_state</a>.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="generic_8h.html#a8931cffd4ffeeaa43c217bf8005da38f" title="Unlock VLFeat state.">vl_unlock_state</a> </dd></dl>

</div>
</div>
<a class="anchor" id="a136474bd173eb04e98989c7a521d4ada"></a><!-- doxytag: member="generic.h::vl_malloc" ref="a136474bd173eb04e98989c7a521d4ada" args="(size_t n)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void * vl_malloc </td>
          <td>(</td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>n</em></td><td>)</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">n</td><td>number of bytes to allocate.</td></tr>
  </table>
  </dd>
</dl>
<p>The function calls the user customizable <code>malloc</code>.</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>result of <code>malloc</code> </dd></dl>

</div>
</div>
<a class="anchor" id="a6213d08692fb90f0a0eaa423644f25c2"></a><!-- doxytag: member="generic.h::vl_realloc" ref="a6213d08692fb90f0a0eaa423644f25c2" args="(void *ptr, size_t n)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void * vl_realloc </td>
          <td>(</td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>ptr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>n</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">ptr</td><td>buffer to reallocate. </td></tr>
    <tr><td class="paramname">n</td><td>number of bytes to allocate.</td></tr>
  </table>
  </dd>
</dl>
<p>The function calls the user-customizable <code>realloc</code>.</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>result of the user-customizable <code>realloc</code>. </dd></dl>

</div>
</div>
<a class="anchor" id="ac04fe278ac908fa6ed02bda099588cf0"></a><!-- doxytag: member="generic.h::vl_set_alloc_func" ref="ac04fe278ac908fa6ed02bda099588cf0" args="(void *(*malloc_func)(size_t), void *(*realloc_func)(void *, size_t), void *(*calloc_func)(size_t, size_t), void(*free_func)(void *))" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void vl_set_alloc_func </td>
          <td>(</td>
          <td class="paramtype">void *(*)(size_t)&#160;</td>
          <td class="paramname"><em>malloc_func</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *(*)(void *, size_t)&#160;</td>
          <td class="paramname"><em>realloc_func</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *(*)(size_t, size_t)&#160;</td>
          <td class="paramname"><em>calloc_func</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void(*)(void *)&#160;</td>
          <td class="paramname"><em>free_func</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">malloc_func</td><td>pointer to <code>malloc</code>. </td></tr>
    <tr><td class="paramname">realloc_func</td><td>pointer to <code>realloc</code>. </td></tr>
    <tr><td class="paramname">calloc_func</td><td>pointer to <code>calloc</code>. </td></tr>
    <tr><td class="paramname">free_func</td><td>pointer to <code>free</code>. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a7a3ebca801573280aafbea04578ef124"></a><!-- doxytag: member="generic.h::vl_set_last_error" ref="a7a3ebca801573280aafbea04578ef124" args="(int error, char const *errorMessage,...)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int vl_set_last_error </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>error</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char const *&#160;</td>
          <td class="paramname"><em>errorMessage</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname"><em>...</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>The function sets the code and optionally the error message of the last encountered error. <em>errorMessage</em> is the message format. It uses the <code>printf</code> convention and is followed by the format arguments. The maximum lenght of the error message is given by <a class="el" href="generic_8h.html#af35e10968d642caab4fbffe6f4b0789c" title="Maximum length (in characters) of an error message.">VL_ERR_MSG_LEN</a> (longer messages are truncated).</p>
<p>Passing <code>NULL</code> as <em>errorMessage</em> sets the error message to the empty string.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">error</td><td>error code. </td></tr>
    <tr><td class="paramname">errorMessage</td><td>error message format string. </td></tr>
    <tr><td class="paramname">...</td><td>format string arguments. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>error code. </dd></dl>

</div>
</div>
<a class="anchor" id="a17ef7f5dfc74e0ff032f46617a5bc1c5"></a><!-- doxytag: member="generic.h::vl_set_printf_func" ref="a17ef7f5dfc74e0ff032f46617a5bc1c5" args="(printf_func_t printf_func)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void vl_set_printf_func </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="generic_8h.html#abed0f89efbee38c21c99d2967bab01c1">printf_func_t</a>&#160;</td>
          <td class="paramname"><em>printf_func</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">printf_func</td><td>pointer to <code>printf</code>. Let <code>print_func</code> be NULL to disable printf. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a3fb6cee731450d886e49da54e29788e8"></a><!-- doxytag: member="generic.h::vl_set_simd_enabled" ref="a3fb6cee731450d886e49da54e29788e8" args="(vl_bool x)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void vl_set_simd_enabled </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="host_8h.html#ad32e7f8ec7333ff33998cf671a3b1412">vl_bool</a>&#160;</td>
          <td class="paramname"><em>x</em></td><td>)</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">x</td><td><code>true</code> if SIMD instructions are used.</td></tr>
  </table>
  </dd>
</dl>
<p>Notice that SIMD instructions are used only if the CPU model supports them. Note also that data alignment may restrict the use of such instructions.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="generic_8h.html#a8b42bd1be913fee5ae234899bbd5990d" title="Check for SSE2 instruction set.">vl_cpu_has_sse2()</a>, <a class="el" href="generic_8h.html#ad176e5e370a9fbe9cb1995f53d228c0f" title="Check for SSE3 instruction set.">vl_cpu_has_sse3()</a>, etc. </dd></dl>

</div>
</div>
<a class="anchor" id="a0eb9d2de6dc4cb6570db6bb3e8c39244"></a><!-- doxytag: member="generic.h::vl_tic" ref="a0eb9d2de6dc4cb6570db6bb3e8c39244" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void vl_tic </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="generic_8h.html#a4a2af50f50dfc91505947ced9656f5e7" title="Get processor time.">vl_get_cpu_time</a>, <a class="el" href="generic_8h.html#a6570090509ab5a156a24e2bbd082590d" title="Get elapsed time since tic.">vl_toc</a>. </dd></dl>

</div>
</div>
<a class="anchor" id="a6570090509ab5a156a24e2bbd082590d"></a><!-- doxytag: member="generic.h::vl_toc" ref="a6570090509ab5a156a24e2bbd082590d" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">double vl_toc </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>The function returns the processor time elapsed since <a class="el" href="generic_8h.html#a0eb9d2de6dc4cb6570db6bb3e8c39244" title="Reset processor time reference The function resets VLFeat TIC/TOC time reference.">vl_tic</a> was called last.</p>
<dl class="remark"><dt><b>Remarks:</b></dt><dd>In multi-threaded applications, there is an independent timer for each execution thread.</dd>
<dd>
On UNIX, this function uses the <code>clock()</code> system call. On Windows, it uses the <code>QueryPerformanceCounter()</code> system call, which is more accurate than <code>clock()</code> on this platform.</dd></dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>elapsed time in seconds. </dd></dl>

</div>
</div>
<a class="anchor" id="a8931cffd4ffeeaa43c217bf8005da38f"></a><!-- doxytag: member="generic.h::vl_unlock_state" ref="a8931cffd4ffeeaa43c217bf8005da38f" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void vl_unlock_state </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>The function unlocks VLFeat global state mutex.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="generic_8h.html#ab305fa7aba6c2a4d543162fd3e146960" title="Lock VLFeat state.">vl_lock_state</a> </dd></dl>

</div>
</div>
<hr/><h2>Variable Documentation</h2>
<a class="anchor" id="a4103c75c5cf944bff8dce736cbb70070"></a><!-- doxytag: member="generic.h::_vl_state" ref="a4103c75c5cf944bff8dce736cbb70070" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structVlState.html">VlState</a> <a class="el" href="generic_8h.html#a4103c75c5cf944bff8dce736cbb70070">_vl_state</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">

</div>
</div>
</div>
     <!-- Doc Here -->
    </div>
   
   </div>
   <div class="clear">&nbsp;</div>
  </div> <!-- pagebody -->
  <div id="footer">
   &copy; 2007-12 Andrea Vedaldi and Brian Fulkerson
  </div> <!-- footer -->

  <!-- Google Analytics Begins -->
  <script xml:space="preserve" type="text/javascript">
   //<![CDATA[
    var localre = /vlfeat.org/;
    if(document.location.host.search(localre) != -1)
    {
   var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
   document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
   }
   //]]>
  </script>
  <script xml:space="preserve" type="text/javascript">
    //<![CDATA[
    var localre = /vlfeat.org/;
    if(document.location.host.search(localre) != -1)
    {

   try {
   var pageTracker = _gat._getTracker("UA-4936091-2");
   pageTracker._trackPageview();
   } catch(err) {}

   }
   //]]>
  </script>
  <!-- Google Analytics Ends -->
 </body>
</html>

 
